Matlab 多层(multi 您所在的位置:网站首页 芯片各层全称rtl level还有哪些level Matlab 多层(multi

Matlab 多层(multi

2024-07-14 01:00| 来源: 网络整理| 查看: 265

前言

网上翻了很久的资料,找不到很详细的解释,又找到matlab的官方文档,但是也只是使用dwt和dwt2的single-level的小波分析,而multi-level的有找到是用wavedec和waverec函数的。在利用dwt和dwt2做multi-level的小波变换时也遇到了一些问题,在此记录一二。

注意: 噬也仅在此提供基本使用方式,具体的请查看相关matlab官方文档:dwt,idwt,dwt2,idwt2,wavedec,waverec。

问题描述

对于一维(1-dim)、二维(2-dim)信号,综合考虑关于影响其小波分析效果的以下方面:

不同母函数(mother wavelet) 软 / 硬去噪(soft / hard denoising, ξ \xi ξ=0.01,0.05,0.1) 分解层数 (decomposition level) 基本处理流程

【整体代码在后面,此部分仅为解释性讲解。】

载入信号 (load)

一维 (1-dim),一般载入后会是一个1×1的struct,需要提取值(可以在右侧工作区双击点开变量查看名称)X=load('Dir\p_5_2.mat'); X=X.signal_name; % Name of the signal 二维 (2-dim),处理成矩阵(图像)% Here is an example of 2-level X=load('Dir\p_5_3.mat'); X=cell2mat(struct2cell(X));

小波分解 (decompostion)

一维 (1-dim) 单层 (1-level)wavename = 'db1'; [cA,cD] = dwt(X,'db1'); 多层 (multi-level),只需要不断对每一层的 cA(Approximation coefficients) 进行分解,或使用wavedec函数wavename = 'db1'; [cA,cD] = dwt(X,wavename); [cA2,cD2] = dwt(cA,wavename); 二维 (2-dim) 单层 (1-level)wavename = 'haar'; % or 'db2', 'coif1' [cA,cH,cV,cD] = dwt2(X,wavename); 多层 (multi-level),只需要不断对每一层的 cA(Approximation coefficients) 进行分解,或使用wavedec2函数% Here is an example of 2-level wavename = 'haar'; [cA,cH,cV,cD] = dwt2(X,wavename); [cA2,cH2,cV2,cD2] = dwt2(cA,wavename);

去噪 (denoising)

一维 (1-dim) 单层 (1-level),‘s':soft denoising, ‘h':hard denoisingthr = 0.01; % threshold cA = wthresh(cA,'s',thr); % or wthresh(cA,'h',thr); cD = wthresh(cD,'s',thr); 多层 (multi-level),在最后一层进行去噪即可,‘s':soft denoising, ‘h':hard denoisingthr = 0.01; % threshold cA2 = wthresh(cA2,'s',thr); % or wthresh(cA2,'h',thr); cD2 = wthresh(cD2,'s',thr); 二维 (2-dim) 单层 (1-level)thr = 0.01; % threshold cA = wthresh(cA,'h',thr); cH = wthresh(cH,'h',thr); cV = wthresh(cV,'h',thr); cD = wthresh(cD,'h',thr); 多层 (multi-level),在最后一层进行去噪即可,‘s':soft denoising, ‘h':hard denoising% Here is an example of 2-level thr = 0.01; % threshold cA2 = wthresh(cA2,'h',thr); cH2 = wthresh(cH2,'h',thr); cV2 = wthresh(cV2,'h',thr); cD2 = wthresh(cD2,'h',thr);

小波重构 (reconstruction)

一维 (1-dim) 单层 (1-level)wavename = 'db1'; x=idwt(cA,cD,wavename); 多层 (multi-level),只需要不断对每一层的 cA(Approximation coefficients) 进行重构,或使用waverec函数% Here is an example of 2-level wavename = 'db1'; cA=idwt(cA2,cD2,'db1'); x=idwt(cA,cD,'db1'); 二维 (2-dim) 单层 (1-level)wavename = 'haar'; % or 'db2', 'coif1' x=idwt2(cA,cH,cV,cD,wavename); 多层 (multi-level),只需要不断对每一层的 cA(Approximation coefficients) 进行分解,或使用waverec2函数 注意: 二维多层重构可能会遇到维度不一致的报错,问题可能在于分解时对于奇偶行列数的处理,经观察发现,多出的行、列其实是重复的数据(和相邻的一样),因此应该直接舍去。% Here is an example of 2-level wavename = 'haar'; cA=idwt2(cA2,cH2,cV2,cD2,wavename); len = size(cA); % size(cA) = (164 190) cA = cA(1:len(1)-1,:); % size(cA


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有